<?
function putDocFile($docType,$idUser,$idDoc,$fileName,$inpFilePath,&$mess='') {
   if (!defined('OVF_FS_DOC_DIR')) {
      $mess = 'No OVF_FS_DOC_DIR';
      return false;
   }
   if ($docType=='') {
      $mess = 'No doc.type';
      return false;
   }
   $dir1 = OVF_FS_DOC_DIR."/$docType";
   if (!file_exists($dir1)) {
      @mkdir($dir1,0775);
   }
   $sId = str_pad($idDoc,9,'0',STR_PAD_LEFT);
   $dM = "M".substr($sId,0,3);
   $dK = "K".substr($sId,3,3);
   $dir2 = $dir1."/$dM";
   if (!file_exists($dir2)) {
      @mkdir($dir2,0775);
   }
   $dir3 = $dir2."/$dK";
   if (!file_exists($dir3)) {
      @mkdir($dir3,0775);
   }
   $aHist = getDocFileHist($docType,$idDoc,$mess);
   if ($aHist===false) {
      return false;
   }
   foreach($aHist as $fn => $md) {
      if (substr($fn,10,1)!='_') continue; 
      $fn1 = substr($fn,0,10);
      $fn2 = substr($fn,10);
      $suf = -1;
      while(file_exists($dir3."/".$fn1.$suf.$fn2)) {$suf--;}
      rename($dir3."/".$fn,$dir3."/".$fn1.$suf.$fn2);
   } 
   $filePath = $dir3."/F".$sId."_".$idUser."_".$fileName;
   $rc = copy($inpFilePath,$filePath);
   //@chmod($dRoot."/$dM/$dK/$sId.".strtolower($fileExt),0664);
   return $rc;
}

function getDocFilePath($docType,$idDoc,&$mess='') {
   if (!defined('OVF_FS_DOC_DIR')) {
      $mess = 'No OVF_FS_DOC_DIR';
      return false;
   }
   if ($docType=='') {
      $mess = 'No doc.type';
      return false;
   }
   $dir1 = OVF_FS_DOC_DIR."/$docType";
   if (!file_exists($dir1)) {
      @mkdir($dir1,0775);
   }
   $sId = str_pad($idDoc,9,'0',STR_PAD_LEFT);
   $dM = "M".substr($sId,0,3);
   $dK = "K".substr($sId,3,3);
   $dir = OVF_FS_DOC_DIR."/$docType/$dM/$dK";
   $dh = opendir($dir);
   if (!$dh) {
      $mess = "No dir $dir";
      return false;
   }
   $sPref = "F".$sId."_";
   $fileName = false;
   while($fn=readdir($dh)) {
      if (substr($fn,0,11)!=$sPref) continue; 
      $fileName = $fn;
      break;
   }
   if ($fileName===false) {
      $mess = $sPref.'not found';
      return false;
   }
   return $dir."/".$fn;
}

function getDocFileHist($docType,$idDoc,&$mess='') {
   if (!defined('OVF_FS_DOC_DIR')) {
      $mess = 'No OVF_FS_DOC_DIR';
      return false;
   }
   if ($docType=='') {
      $mess = 'No doc.type';
      return false;
   }
   $dir1 = OVF_FS_DOC_DIR."/$docType";
   if (!file_exists($dir1)) {
      @mkdir($dir1,0775);
   }
   $sId = str_pad($idDoc,9,'0',STR_PAD_LEFT);
   $dM = "M".substr($sId,0,3);
   $dK = "K".substr($sId,3,3);
   $dir = OVF_FS_DOC_DIR."/$docType/$dM/$dK";
   $dh = opendir($dir);
   if (!$dh) {
      $mess = "No dir $dir";
      return false;
   }
   $sPref = "F".$sId;
   $aHist = array();
   while($fn=readdir($dh)) {
      if (substr($fn,0,10)!=$sPref) continue; 
      $aHist[$fn] = filemtime($dir."/".$fn);
   }
   arsort($aHist);
   return $aHist;
}
